1 module mruby.data;
2 
3 extern (C):
4 
5 import mruby;
6 import mruby.mrb_class;
7 import mruby.object;
8 import mruby.variable;
9 import mruby.value;
10 
11 struct mrb_data_type
12 {
13 	const(char)* struct_name;
14 	void function (mrb_state*, void*) dfree;
15 }
16 
17 struct RData
18 {
19 	enum mrb_vtype
20 	{
21 		MRB_TT_FALSE = 0,
22 		MRB_TT_FREE = 1,
23 		MRB_TT_TRUE = 2,
24 		MRB_TT_FIXNUM = 3,
25 		MRB_TT_SYMBOL = 4,
26 		MRB_TT_UNDEF = 5,
27 		MRB_TT_FLOAT = 6,
28 		MRB_TT_CPTR = 7,
29 		MRB_TT_OBJECT = 8,
30 		MRB_TT_CLASS = 9,
31 		MRB_TT_MODULE = 10,
32 		MRB_TT_ICLASS = 11,
33 		MRB_TT_SCLASS = 12,
34 		MRB_TT_PROC = 13,
35 		MRB_TT_ARRAY = 14,
36 		MRB_TT_HASH = 15,
37 		MRB_TT_STRING = 16,
38 		MRB_TT_RANGE = 17,
39 		MRB_TT_EXCEPTION = 18,
40 		MRB_TT_FILE = 19,
41 		MRB_TT_ENV = 20,
42 		MRB_TT_DATA = 21,
43 		MRB_TT_FIBER = 22,
44 		MRB_TT_MAXDEFINE = 23
45 	}
46 	mrb_vtype tt;
47 	uint color;
48 	uint flags;
49 	RClass* c;
50 	RBasic* gcnext;
51 	iv_tbl* iv;
52 	const(mrb_data_type)* type;
53 	void* data;
54 }
55 
56 RData* mrb_data_object_alloc (mrb_state* mrb, RClass* klass, void* datap, const(mrb_data_type)* type);
57 void mrb_data_check_type (mrb_state* mrb, mrb_value, const(mrb_data_type)*);
58 void* mrb_data_get_ptr (mrb_state* mrb, mrb_value, const(mrb_data_type)*);
59 void* mrb_data_check_get_ptr (mrb_state* mrb, mrb_value, const(mrb_data_type)*);
60 void mrb_data_init (mrb_value v, void* ptr, const(mrb_data_type)* type);